package com.tom.architect02.ui30.day22;

import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;

/**
 * Added by Tom on 2024/06/20.
 * 筛选菜单适配器 Adapter
 */
public abstract class BaseMenuAdapter {
    //region 观察者模式
    // 所有观察者，类似微信公众号：注册的订阅用户，放到集合中
    protected final ArrayList<MenuObserver> mObservers = new ArrayList<MenuObserver>();

    // 观察者模式：注册，反注册
    public void registerDataSetObserver(MenuObserver observer) {
        mObservers.add(observer);
    }
    public void unregisterDataSetObserver(MenuObserver observer) {
        mObservers.remove(observer);
    }
    public void closeMenu() {
            synchronized(mObservers) {
                for (int i = mObservers.size() - 1; i >= 0; i--) {
                    // 发送通知
                    mObservers.get(i).closeMenu();
                }
            }
    }
    //endregion


    //region 适配器模式
    // 获取总共有多少条
    public abstract int getCount();

    // 获取当前的TabView
    public abstract View getTabView(int position, ViewGroup parent);

    // 获取当前的菜单内容
    public abstract View getMenuView(int position, ViewGroup parent);

    /**
     * 菜单打开，改变Tab的样式
     * @param tabView
     */
    public void menuOpen(View tabView) {

    }

    /**
     * 菜单关闭，改变Tab的样式
     * @param tabView
     */
    public void menuClose(View tabView) {

    }
    //endregion

}
